PRISMAstatement::prisma(found = 8002,
found_other = 7,
no_dupes = 7187,
screened = 7187,
screen_exclusions = 6913,
full_text = 274,
full_text_exclusions = 124,
qualitative = 144,
quantitative = 144,
width = 800, height = 1200)
## Warning in prisma_graph(found = found, found_other = found_other, no_dupes =
## no_dupes, : After full-text exclusions, a different number of remaining articles
## for qualitative synthesis is stated.
n_sample = dat.meta.long %>%
summarise(n=length(unique(paste(ID_study, Echantillons_indépendants))))
data.frame(n_sample=n_sample, dat_tot)
## n n_studies n_es n_nexp_out n_exp_out
## 1 152 142 647 8300 7983
dat.borenstein %>%
group_by(outcome_RDoC_agg) %>%
summarise(n_es = sum(trial),
n_exp = sum(n_exp),
n_nexp = sum(n_nexp),
n_study2 = length(unique(ID_study)))
## # A tibble: 5 x 5
## outcome_RDoC_agg n_es n_exp n_nexp n_study2
## <chr> <dbl> <dbl> <dbl> <int>
## 1 Empathy 31 507 560 13
## 2 Everyday social skills 223 5847 5506 87
## 3 Facial emotion recognition 186 2094 2168 45
## 4 Non-facial emotion recognition 28 522 580 9
## 5 Theory of mind 179 2482 2395 52
synth_n = dat.borenstein %>%
group_by(outcome_RDoC) %>%
summarise(n_es = sum(trial),
n_exp = sum(n_exp),
n_nexp = sum(n_nexp),
nstudy1 = n(),
n_study2 = length(unique(ID_study)))
synth_n
## # A tibble: 10 x 6
## outcome_RDoC n_es n_exp n_nexp nstudy1 n_stu~1
## <chr> <dbl> <dbl> <dbl> <int> <int>
## 1 Empathy (adjusted) 6 71 80 3 3
## 2 Empathy (non-adjusted) 25 436 480 12 12
## 3 Everyday social skills (adjusted) 14 277 306 8 8
## 4 Everyday social skills (non-adjusted) 209 5570 5200 82 82
## 5 Facial emotion recognition (adjusted) 18 382 511 6 6
## 6 Facial emotion recognition (non-adjusted) 168 1712 1657 42 42
## 7 Non-facial emotion recognition (adjusted) 3 141 254 2 2
## 8 Non-facial emotion recognition (non-adjus~ 25 381 326 8 8
## 9 Theory of mind (adjusted) 18 198 230 7 7
## 10 Theory of mind (non-adjusted) 161 2284 2165 49 49
## # ... with abbreviated variable name 1: n_study2
dat.meta.long %>%
group_by(outcome_RDoC) %>%
summarise(n=length(unique(paste(ID_study, Echantillons_indépendants))))
## # A tibble: 10 x 2
## outcome_RDoC n
## <chr> <int>
## 1 Empathy (adjusted) 3
## 2 Empathy (non-adjusted) 14
## 3 Everyday social skills (adjusted) 8
## 4 Everyday social skills (non-adjusted) 86
## 5 Facial emotion recognition (adjusted) 7
## 6 Facial emotion recognition (non-adjusted) 44
## 7 Non-facial emotion recognition (adjusted) 2
## 8 Non-facial emotion recognition (non-adjusted) 8
## 9 Theory of mind (adjusted) 7
## 10 Theory of mind (non-adjusted) 52
ggplot(dat.meta, aes(x = es_adj, y = es)) +
geom_jitter(alpha = 0.3, width = 0.35, size = 1/dat.meta$se) +
geom_violin(size = 0.5, alpha = 0.5) +
theme_bw()
2 plots, tu choisis celui qui tu préfères
ggplot(dat.meta, aes(x = outcome_RDoC_agg, y = es)) +
geom_jitter(width = 0.1, alpha = 0.2, aes(fill = ID, size = 1/se)) + # geom_boxplot(trim=FALSE, alpha = 0.6) +
facet_grid(es_adj ~ "") +
theme_bw() +
labs(y = "Standardized mean difference (SMD)", x = "") +
guides(fill=FALSE) +
coord_flip()
ggplot(dat.meta, aes(x = outcome_RDoC_agg, y = es)) +
geom_violin(aes(fill = outcome_RDoC_agg), alpha = 0.3) +
geom_jitter(width = 0.1, alpha = 0.2, aes(fill = ID, size = 1/se)) +
geom_boxplot(width=0.1)+
facet_grid(es_adj ~ "") +
theme_bw() +
labs(y = "Standardized mean difference (SMD)", x = "") +
theme(text = element_text(size = 18),
legend.position = "none",
axis.title.y = element_text(size=12, face="bold"),
axis.title.x = element_text(size=12, face="bold")) +
coord_flip()
V.SCE <- with(dat.meta,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
# all.equal(dat.meta$se^2, diag(unlist(V.SCE)))
SCE <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.ISQ <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ outcome_RDoC - 1)
het = function(x, y) {
i2 = NA
for (i in 1:nrow(vcov(x))) {
i2[i] = 100 * (vcov(x)[i,i] - vcov(y)[i,i]) / vcov(x)[i,i]
}
return(i2)
}
res.SCE <- data.frame(clubSandwich::coef_test(SCE, vcov = "CR2", cluster = dat.meta$ID_study)) # , cluster = df.ES$researchgroup
res.SCE.ci = data.frame(clubSandwich::conf_int(SCE, vcov = "CR2", cluster = dat.meta$ID_study))
res.SCE$target <- gsub("outcome_RDoC", "", row.names(res.SCE))
res.SCE.ci$target <- gsub("outcome_RDoC", "", row.names(res.SCE.ci))
res.SCE = dplyr::left_join(res.SCE, res.SCE.ci)
res.SCE$tau2 = SCE$tau2
res.SCE$I2 = het(SCE, SCE.ISQ)
res_main <- left_join(res.SCE, dat_RDoC)
## Joining, by = "target"
res_main$p_Satt_bonferroni = res_main$p_Satt * 8
res_main[,c("beta", "SE", "tstat", "df", "p_Satt",
"p_Satt_bonferroni", "CI_L", "CI_U", "tau2", "I2",
"n_studies", "n_nexp_out" , "n_exp_out")] <- apply(
res_main[,c("beta", "SE", "tstat", "df", "p_Satt",
"p_Satt_bonferroni", "CI_L", "CI_U", "tau2", "I2",
"n_studies", "n_nexp_out" , "n_exp_out")], 2, function(x) round(x, 3))
DT::datatable(res_main,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res_main$SE_COR = (res_main$CI_U - res_main$CI_L) / (3.92)
res_main$raw_outcome <- gsub(r"{\s*\([^\)]+\)}","",
as.character(res_main$outcome_RDoC))
tab.plot <- data.frame(
Outcome = do.call(rbind, lapply(res_main$outcome_RDoC,
function(x) paste(strwrap(x, width = 60),
collapse = "\n"))),
n_ADHD = res_main$n_exp_out,
n_nexpT = res_main$n_nexp_out,
n_studies = res_main$n_studies,
tau2 = res_main$tau2,
I2 = paste0(round(res_main$I2), "%"))
value_num_plot = data.frame(apply(res_main[, c("beta", "SE_COR")], 2, function(x) as.numeric(as.character(x))))
forest_modif(x = value_num_plot[ ,c("beta", "SE_COR")],
variant = "classic",
col = "Greys", xlab = "SMD", annotate_CI = TRUE,
study_table = tab.plot,
group = res_main$raw_outcome,
type = "study_only",
text_size = 3.5,
x_limit = c(-1, 2),
N = tab.plot$n_ADHD + tab.plot$n_nexpT,
x_breaks = seq(-3, 3, 1)
)
# windows() ## create window to plot your file, eval = FALSE
metafor::profile.rma.mv(SCE)
## Profiling tau2 = 1
## Profiling tau2 = 2
## Profiling tau2 = 3
## Profiling tau2 = 4
## Profiling tau2 = 5
## Profiling tau2 = 6
## Profiling tau2 = 7
## Profiling tau2 = 8
## Profiling tau2 = 9
## Profiling tau2 = 10
# dev.off()
meta.reg <- metafor::rma.mv(yi = es, V = se^2,
data = dat.borenstein,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
mods = ~ outcome_RDoC - 1)
res.S1.a.clean = data.frame(
beta = meta.reg$beta,
se = meta.reg$se,
ci_lo = meta.reg$ci.lb,
ci_up = meta.reg$ci.ub,
pval = meta.reg$pval,
target = gsub("outcome_RDoC", "", row.names(meta.reg$b)))
res.S1 <- left_join(res.S1.a.clean, dat_RDoC)
## Joining, by = "target"
DT::datatable(res.S1,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
robu.main <- robumeta::robu(es ~ outcome_RDoC - 1,
data = dat.meta,
studynum = ID_study,
var.eff.size = se^2,
modelweights = "CORR",
small = TRUE,
rho = 0.8)
dat_robu_main = data.frame(
beta = robu.main$reg_table$b.r,
se = robu.main$reg_table$SE,
ci_lo = robu.main$reg_table$CI.L,
ci_up = robu.main$reg_table$CI.U,
pval = robu.main$reg_table$prob,
target = gsub("outcome_RDoC", "", row.names(meta.reg$b)),
target2 = robu.main$reg_table$labels)
DT::datatable(dat_robu_main,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res.SCE.main = data.frame(
beta = res.SCE$beta,
se = res.SCE$SE,
ci_lo = res.SCE$CI_L,
ci_up = res.SCE$CI_U,
pval = res.SCE$p_Satt,
target =res.SCE$target)
res.SCE.main$Analysis = "SCE approach"
res.S1.a.clean$Analysis = "Borenstein approach"
dat_robu_main$Analysis = "RVE approach"
dat_forest_S1 = bind_rows(res.SCE.main,
res.S1.a.clean,
dat_robu_main)
meta_res_tot = meta::metagen(TE = beta, seTE = (ci_up-ci_lo)/(2*qnorm(.975)),
sm = "SMD", data = dat_forest_S1,
subgroup = target,
studlab = Analysis)
meta::forest(meta_res_tot, random = FALSE, fixed = FALSE,
leftcols = c("studlab"),
text.subgroup.nohet = FALSE, print.tau2 = FALSE, print.I2 = FALSE, print.pval.Q = FALSE,
plotwidth = "15cm", colgap.left = "1cm", colgap.right = "1cm",
leftlabs= c(""),
just = "right", spacing = 0.8)
dat.meta$inv_n_tilda <- with(dat.meta, (n_nexp + n_exp)/(n_nexp*n_exp))
dat.meta$sqrt_inv_n_tilda <- with(dat.meta, sqrt(inv_n_tilda))
nak.pb = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ 1 + sqrt_inv_n_tilda + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(nak.pb, vcov = "CR2", cluster = dat.meta$ID_study)
## Coef. Estimate SE
## 1 intrcpt -0.8238 0.770
## 2 sqrt_inv_n_tilda 5.1456 1.878
## 3 outcome_RDoCEmpathy (non-adjusted) 0.0533 0.610
## 4 outcome_RDoCEveryday social skills (adjusted) 0.9632 0.624
## 5 outcome_RDoCEveryday social skills (non-adjusted) 0.8809 0.588
## 6 outcome_RDoCFacial emotion recognition (adjusted) 0.1772 0.635
## 7 outcome_RDoCFacial emotion recognition (non-adjusted) 0.1777 0.585
## 8 outcome_RDoCNon-facial emotion recognition (adjusted) 0.0176 0.683
## 9 outcome_RDoCNon-facial emotion recognition (non-adjusted) -0.0411 0.590
## 10 outcome_RDoCTheory of mind (adjusted) 0.1884 0.592
## 11 outcome_RDoCTheory of mind (non-adjusted) 0.3708 0.585
## t-stat d.f. p-val (Satt) Sig.
## 1 -1.0697 2.14 0.3905
## 2 2.7396 18.61 0.0132 *
## 3 0.0874 2.62 0.9366
## 4 1.5448 2.68 0.2305
## 5 1.4990 2.09 0.2677
## 6 0.2793 2.67 0.8003
## 7 0.3039 2.13 0.7883
## 8 0.0258 2.96 0.9810
## 9 -0.0696 2.12 0.9505
## 10 0.3185 2.22 0.7776
## 11 0.6334 2.13 0.5878
PET = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ se,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(PET, vcov = "CR2",
cluster = dat.meta$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt -2.88 0.429 -6.71 70.5 <0.001 ***
## 2 se 14.32 1.602 8.94 23.6 <0.001 ***
dat.meta$var = dat.meta$se^2
PET = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ var,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(PET, vcov = "CR2",
cluster = dat.meta$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt -0.873 0.18 -4.84 75.4 <0.001 ***
## 2 var 23.259 2.36 9.85 18.8 <0.001 ***
dat_egger = data.frame(
meta_review = "Haza",
study = dat.borenstein$ID_study,
factor = dat.borenstein$outcome_RDoC,
value = dat.borenstein$es,
se = dat.borenstein$se,
n_cases = dat.borenstein$n_exp,
n_controls = dat.borenstein$n_nexp,
measure = "G")
umb = metaumbrella::umbrella(dat_egger)
## Analyzing factor: Theory of mind (non-adjusted)
## Analyzing factor: Everyday social skills (non-adjusted)
## Analyzing factor: Everyday social skills (adjusted)
## Analyzing factor: Empathy (adjusted)
## Analyzing factor: Facial emotion recognition (non-adjusted)
## Analyzing factor: Non-facial emotion recognition (non-adjusted)
## Analyzing factor: Facial emotion recognition (adjusted)
## Analyzing factor: Theory of mind (adjusted)
## Analyzing factor: Empathy (non-adjusted)
## Analyzing factor: Non-facial emotion recognition (adjusted)
umb
##
## Umbrella review:
## Factor n_studies total_n n_cases
## 1 Theory of mind (non-adjusted) 49 4449 2284
## 2 Everyday social skills (non-adjusted) 82 10770 5570
## 3 Everyday social skills (adjusted) 8 583 277
## 4 Empathy (adjusted) 3 151 71
## 5 Facial emotion recognition (non-adjusted) 42 3369 1712
## 6 Non-facial emotion recognition (non-adjusted) 8 707 381
## 7 Facial emotion recognition (adjusted) 6 893 382
## 8 Theory of mind (adjusted) 7 428 198
## 9 Empathy (non-adjusted) 12 916 436
## 10 Non-facial emotion recognition (adjusted) 2 395 141
## n_controls measure value value_CI eG eG_CI eOR
## 1 2165 G 0.838 [0.684, 0.992] 0.838 [0.684, 0.992] 4.575
## 2 5200 G 1.224 [1.081, 1.367] 1.224 [1.081, 1.367] 9.209
## 3 306 G 1.465 [1.011, 1.92] 1.465 [1.011, 1.92] 14.268
## 4 80 G 0.704 [-0.149, 1.558] 0.704 [-0.149, 1.558] 3.586
## 5 1657 G 0.629 [0.46, 0.798] 0.629 [0.46, 0.798] 3.132
## 6 326 G 0.323 [0.076, 0.57] 0.323 [0.076, 0.57] 1.796
## 7 511 G 0.388 [0.205, 0.57] 0.388 [0.205, 0.57] 2.021
## 8 230 G 0.735 [0.483, 0.987] 0.735 [0.483, 0.987] 3.795
## 9 480 G 0.564 [0.15, 0.977] 0.564 [0.15, 0.977] 2.779
## 10 254 G 0.166 [-0.039, 0.371] 0.166 [-0.039, 0.371] 1.352
## eOR_CI p_value I2 PI_eG PI_eOR
## 1 [3.459, 6.051] 1.62e-26 79.674 [-0.15, 1.827] [0.761, 27.482]
## 2 [7.107, 11.932] 2.47e-63 88.752 [0.007, 2.441] [1.013, 83.719]
## 3 [6.261, 32.516] 2.54e-10 80.824 [-0.093, 3.024] [0.845, 240.955]
## 4 [0.763, 16.865] 1.06e-01 85.352 [-9.768, 11.176] [0, 636178738.813]
## 5 [2.305, 4.256] 2.89e-13 86.201 [-0.397, 1.656] [0.487, 20.151]
## 6 [1.147, 2.811] 1.04e-02 60.325 [-0.42, 1.065] [0.467, 6.906]
## 7 [1.451, 2.814] 3.14e-05 48.174 [-0.112, 0.888] [0.816, 5.003]
## 8 [2.403, 5.995] 1.07e-08 44.783 [0.068, 1.402] [1.132, 12.727]
## 9 [1.312, 5.887] 7.60e-03 85.327 [-1.025, 2.152] [0.156, 49.605]
## 10 [0.932, 1.961] 1.12e-01 0.000 < 3 studies < 3 studies
## egger_p ESB_p power_med JK_p largest_CI_eG largest_CI_eOR rob
## 1 5.04e-01 6.38e-01 100.0 3.50e-25 [0.478, 1.536] [2.379, 16.202] NA
## 2 7.02e-05 1.43e-02 100.0 1.88e-61 [0.421, 0.722] [2.145, 3.707] NA
## 3 1.12e-01 2.37e-01 100.0 8.11e-08 [0.623, 1.315] [3.095, 10.864] NA
## 4 7.95e-01 4.94e-01 86.1 3.04e-01 [0.97, 2.069] [5.806, 42.66] NA
## 5 7.96e-01 9.49e-01 100.0 1.67e-12 [1.684, 2.302] [21.228, 65.088] NA
## 6 4.20e-02 4.10e-01 100.0 3.36e-02 [-0.282, 0.333] [0.6, 1.83] NA
## 7 2.24e-01 4.52e-01 100.0 5.12e-03 [0.166, 0.63] [1.352, 3.133] NA
## 8 2.58e-01 9.02e-01 99.9 2.21e-06 [0.271, 0.939] [1.634, 5.494] NA
## 9 2.66e-01 6.64e-01 100.0 1.94e-02 [0.02, 0.77] [1.036, 4.044] NA
## 10 < 3 studies <NA> 99.7 6.41e-01 [-0.05, 0.41] [0.914, 2.102] NA
## amstar
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## 7 NA
## 8 NA
## 9 NA
## 10 NA
dat.meta4 = subset(dat.meta, Type_publication %in%
c("Article", "Thèse"))
V.SCE4 <- with(dat.meta4,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S4 <- metafor::rma.mv(yi = es, V = V.SCE4,
data = dat.meta4,
mods = ~ Type_publication,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.834 0.055 15.158 79.4 <0.001 ***
## 2 Type_publicationThèse 0.108 0.117 0.924 11.7 0.374
SCE.S4 <- metafor::rma.mv(yi = es, V = V.SCE4,
data = dat.meta4,
mods = ~ Type_publication - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_publicationArticle 0.834 0.055 15.16 79.35 <0.001 ***
## 2 Type_publicationThèse 0.942 0.104 9.09 9.29 <0.001 ***
dat.meta4 = subset(dat.meta, Type_publication %in%
c("Article", "Thèse") & outcome_RDoC == "Theory of mind (non-adjusted)")
dat.meta4$var = dat.meta4$se^2
SCE.S4 <- metafor::rma.mv(yi = es, V = var,
data = dat.meta4,
mods = ~ Type_publication,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.822 0.0784 10.475 40.76 <0.001 ***
## 2 Type_publicationThèse -0.218 0.2532 -0.862 5.87 0.422
SCE.S4 <- metafor::rma.mv(yi = es, V = var,
data = dat.meta4,
mods = ~ Type_publication - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_publicationArticle 0.822 0.0784 10.48 40.76 <0.001 ***
## 2 Type_publicationThèse 0.603 0.2407 2.51 4.68 0.0574 .
dat.meta.S10 = subset(dat.meta, !is.na(rob_tot) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S10 <- with(dat.meta.S10,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S10 <- metafor::rma.mv(yi = es, V = V.SCE.S10,
data = dat.meta.S10,
mods = ~ rob_tot * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S10, vcov = "CR2", cluster = dat.meta.S10$ID_study)
## Coef. Estimate SE
## 1 intrcpt 0.5474 0.3693
## 2 rob_tot 0.1165 0.0619
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.2995 0.5161
## 4 outcome_RDoCTheory of mind (non-adjusted) 0.1273 0.4208
## 5 rob_tot:outcome_RDoCFacial emotion recognition (non-adjusted) -0.0563 0.0872
## 6 rob_tot:outcome_RDoCTheory of mind (non-adjusted) -0.0903 0.0701
## t-stat d.f. p-val (Satt) Sig.
## 1 1.483 5.76 0.191
## 2 1.883 4.23 0.129
## 3 -0.580 20.32 0.568
## 4 0.303 6.05 0.772
## 5 -0.646 19.31 0.526
## 6 -1.288 4.94 0.255
anova(SCE.S10, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 4.8748, p-val = 0.0874
SCE.S10 <- metafor::rma.mv(yi = es, V = V.SCE.S10,
data = dat.meta.S10,
mods = ~ rob_tot + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S10, vcov = "CR2", cluster = dat.meta.S10$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 0.7563 0.2262 3.34
## 2 rob_tot 0.0807 0.0365 2.21
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.6379 0.1089 -5.86
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.4258 0.1061 -4.01
## d.f. p-val (Satt) Sig.
## 1 10.30 0.00715 **
## 2 6.01 0.06915 .
## 3 80.83 < 0.001 ***
## 4 89.67 < 0.001 ***
ggplot(dat.meta.S10, aes(x = rob_tot, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth() + #method ="lm"
theme_bw()
dat.meta.S11 = subset(dat.meta, !is.na(Type_mesure) & outcome_RDoC== "Theory of mind (non-adjusted)")
dat.meta.S11$vi = dat.meta.S11$se^2
dat.meta.S11$es_id = 1:nrow(dat.meta.S11)
SCE.S11 <- metafor::rma.mv(yi = es, V = vi,
data = dat.meta.S11,
mods = ~ Type_mesure ,
random = ~ 1 | ID_study/es_id)
clubSandwich::coef_test(SCE.S11, vcov = "CR2", cluster = dat.meta.S11$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.767 0.0744 10.32 43.20 <0.001 ***
## 2 Type_mesureReport 0.487 0.2379 2.05 7.77 0.076 .
SCE.S11wi <- metafor::rma.mv(yi = es, V = vi,
data = dat.meta.S11,
mods = ~ Type_mesure - 1,
random = ~ 1 | ID_study/es_id)
clubSandwich::coef_test(SCE.S11wi, vcov = "CR2", cluster = dat.meta.S11$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_mesureParadigm 0.767 0.0744 10.3 43.20 <0.001 ***
## 2 Type_mesureReport 1.254 0.2410 5.2 8.28 <0.001 ***
dat.meta.S5 = subset(dat.meta,
emot_spec %in% c("Happy", "Sad", "Surprise", "Fear", "Disgust", "Anger") &
grepl("Facial", dat.meta$outcome_RDoC, fixed = TRUE) &
!grepl("(adjusted)", dat.meta$outcome_RDoC, fixed = TRUE))
V.SCE.S5 <- with(dat.meta.S5,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = emot_spec))
# all.equal(dat.meta$se^2, diag(unlist(V.SCE)))
SCE.S5 <- metafor::rma.mv(yi = es, V = V.SCE.S5,
data = dat.meta.S5,
mods = ~ emot_spec - 1,
random = ~ emot_spec | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.ISQ.S5 <- metafor::rma.mv(yi = es, V = V.SCE.S5,
data = dat.meta.S5,
mods = ~ emot_spec - 1)
res.SCE.S5 <- data.frame(clubSandwich::coef_test(SCE.S5, vcov = "CR2", cluster = dat.meta.S5$ID_study)) # , cluster = df.ES$researchgroup
res.SCE.ci.S5 = data.frame(clubSandwich::conf_int(SCE.S5, vcov = "CR2", cluster = dat.meta.S5$ID_study))
res.SCE.S5$emot_spec <- gsub("emot_spec", "", row.names(res.SCE.S5))
res.SCE.ci.S5$emot_spec <- gsub("emot_spec", "", row.names(res.SCE.ci.S5))
res.SCE.S5 = dplyr::left_join(res.SCE.S5, res.SCE.ci.S5)
## Joining, by = c("beta", "SE", "df", "emot_spec")
res.SCE.S5$I2 = het(SCE.S5, SCE.ISQ.S5)
res.SCE.S5$tau2 = SCE.S5$tau2
res.SCE.clean.S5 = subset(res.SCE.S5, SE > 0.000001)
dat_emot$emot_spec = dat_emot$Nom_sousdim_clean
res_S5 <- left_join(res.SCE.clean.S5, dat_emot)
## Joining, by = "emot_spec"
res_S5[,c("beta", "SE", "tstat", "df", "p_Satt", "CI_L", "CI_U", "I2", "n_studies", "n_nexp_out" , "n_exp_out")] <- apply(res_S5[,c("beta", "SE", "tstat", "df", "p_Satt", "CI_L", "CI_U", "I2", "n_studies", "n_nexp_out" , "n_exp_out")], 2, function(x) round(x, 3))
DT::datatable(res_S5,
rownames = FALSE,
options = list( # options
scrollX = TRUE,
dom = c('ft'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res_S5$raw_outcome <- gsub(r"{\s*\([^\)]+\)}","",
as.character(res_S5$Nom_sousdim_clean))
tab.plot.S5 <- data.frame(
Outcome = do.call(rbind, lapply(res_S5$Nom_sousdim_clean,
function(x) paste(strwrap(x, width = 60),
collapse = "\n"))),
n_ADHD = res_S5$n_exp_out,
n_nexpT = res_S5$n_nexp_out,
n_studies = res_S5$n_studies,
I2 = paste0(round(res_S5$I2), "%"))
value_num_plot_S5 = data.frame(apply(res_S5[, c("beta", "SE")], 2, function(x) as.numeric(as.character(x))))
forest_modif(x = value_num_plot_S5[ ,c("beta", "SE")],
variant = "classic",
col = "Greys", xlab = "SMD", annotate_CI = TRUE,
study_table = tab.plot.S5,
group = res_S5$raw_outcome,
type = "study_only",
text_size = 3.5,
x_limit = c(-1, 2),
N = tab.plot.S5$n_ADHD + tab.plot.S5$n_nexpT,
x_breaks = seq(-3, 3, 1)
)
dat.meta.S6 = subset(dat.meta, !is.na(age) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S6 <- with(dat.meta.S6,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE
## 1 intrcpt 2.552 1.063
## 2 age -0.129 0.104
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -1.790 1.210
## 4 outcome_RDoCTheory of mind (non-adjusted) -1.394 1.356
## 5 age:outcome_RDoCFacial emotion recognition (non-adjusted) 0.117 0.118
## 6 age:outcome_RDoCTheory of mind (non-adjusted) 0.100 0.130
## t-stat d.f. p-val (Satt) Sig.
## 1 2.40 17.7 0.0276 *
## 2 -1.24 15.4 0.2322
## 3 -1.48 32.1 0.1489
## 4 -1.03 33.8 0.3112
## 5 0.99 26.1 0.3314
## 6 0.77 29.7 0.4475
anova(SCE.S6, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 7.9569, p-val = 0.0187
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.8902 0.5003 3.78
## 2 age -0.0648 0.0483 -1.34
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.5582 0.1185 -4.71
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.3438 0.1095 -3.14
## d.f. p-val (Satt) Sig.
## 1 41.3 < 0.001 ***
## 2 32.0 0.18867
## 3 76.6 < 0.001 ***
## 4 90.2 0.00229 **
dat.meta.S6 = subset(dat.meta, !is.na(age_diff) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S6 <- with(dat.meta.S6,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age_diff * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate
## 1 intrcpt 1.22286
## 2 age_diff -0.05053
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.58063
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.38272
## 5 age_diff:outcome_RDoCFacial emotion recognition (non-adjusted) -0.06574
## 6 age_diff:outcome_RDoCTheory of mind (non-adjusted) 0.00277
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.0772 15.8397 79.18 <0.001 ***
## 2 0.2305 -0.2193 3.46 0.839
## 3 0.1136 -5.1115 81.58 <0.001 ***
## 4 0.1069 -3.5815 93.58 <0.001 ***
## 5 0.2510 -0.2619 5.33 0.803
## 6 0.2571 0.0108 5.56 0.992
anova(SCE.S6, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.4459, p-val = 0.2944
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age_diff + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.2219 0.0749 16.32
## 2 age_diff -0.0648 0.0594 -1.09
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.5855 0.1118 -5.24
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.3820 0.1058 -3.61
## d.f. p-val (Satt) Sig.
## 1 79.24 <0.001 ***
## 2 6.62 0.313
## 3 82.31 <0.001 ***
## 4 93.56 <0.001 ***
dat.meta.S7_a = subset(dat.meta, !is.na(percentage_ASD) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]) & percentage_ASD %in% c(0,100))
dat.meta.S7_a$percentage_ASD = factor(dat.meta.S7_a$percentage_ASD)
V.SCE.S7_a <- with(dat.meta.S7_a,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S7_a <- metafor::rma.mv(yi = es, V = V.SCE.S7_a,
data = dat.meta.S7_a,
mods = ~ percentage_ASD * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_a, vcov = "CR2", cluster = dat.meta.S7_a$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_ASD100
## 3 outcome_RDoCFacial emotion recognition (non-adjusted)
## 4 outcome_RDoCTheory of mind (non-adjusted)
## 5 percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted)
## 6 percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.333 0.096 13.88 45.40 < 0.001 ***
## 2 1.059 0.220 4.82 4.62 0.00588 **
## 3 -0.764 0.136 -5.63 49.26 < 0.001 ***
## 4 -0.465 0.146 -3.18 50.32 0.00252 **
## 5 -0.979 0.219 -4.48 2.62 0.02762 *
## 6 -0.753 0.250 -3.01 3.48 0.04750 *
anova(SCE.S7_a, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 188.0935, p-val < .0001
SCE.S7_a_ph = metafor::rma.mv(yi = es, V = V.SCE.S7_a,
data = dat.meta.S7_a,
mods = ~ percentage_ASD : outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.S7_a_ph
##
## Multivariate Meta-Analysis Model (k = 363; method: REML)
##
## Variance Components:
##
## outer factor: ID_study (nlvls = 73)
## inner factor: outcome_RDoC (nlvls = 3)
##
## estim sqrt k.lvl fixed
## tau^2.1 0.3624 0.6020 120 no
## tau^2.2 0.2202 0.4693 131 no
## tau^2.3 0.3214 0.5669 112 no
## level
## tau^2.1 Everyday social skills (non-adjusted)
## tau^2.2 Facial emotion recognition (non-adjusted)
## tau^2.3 Theory of mind (non-adjusted)
##
## Test for Residual Heterogeneity:
## QE(df = 357) = 6188.1350, p-val < .0001
##
## Test of Moderators (coefficients 1:6):
## QM(df = 6) = 798.7460, p-val < .0001
##
## Model Results:
##
## estimate
## percentage_ASD0:outcome_RDoCEveryday social skills (non-adjusted) 1.3325
## percentage_ASD100:outcome_RDoCEveryday social skills (non-adjusted) 2.3914
## percentage_ASD0:outcome_RDoCFacial emotion recognition (non-adjusted) 0.5684
## percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted) 0.6486
## percentage_ASD0:outcome_RDoCTheory of mind (non-adjusted) 0.8672
## percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted) 1.1735
## se
## percentage_ASD0:outcome_RDoCEveryday social skills (non-adjusted) 0.0962
## percentage_ASD100:outcome_RDoCEveryday social skills (non-adjusted) 0.1061
## percentage_ASD0:outcome_RDoCFacial emotion recognition (non-adjusted) 0.1043
## percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted) 0.1190
## percentage_ASD0:outcome_RDoCTheory of mind (non-adjusted) 0.1148
## percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted) 0.1250
## zval
## percentage_ASD0:outcome_RDoCEveryday social skills (non-adjusted) 13.8450
## percentage_ASD100:outcome_RDoCEveryday social skills (non-adjusted) 22.5316
## percentage_ASD0:outcome_RDoCFacial emotion recognition (non-adjusted) 5.4485
## percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted) 5.4511
## percentage_ASD0:outcome_RDoCTheory of mind (non-adjusted) 7.5516
## percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted) 9.3882
## pval
## percentage_ASD0:outcome_RDoCEveryday social skills (non-adjusted) <.0001
## percentage_ASD100:outcome_RDoCEveryday social skills (non-adjusted) <.0001
## percentage_ASD0:outcome_RDoCFacial emotion recognition (non-adjusted) <.0001
## percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted) <.0001
## percentage_ASD0:outcome_RDoCTheory of mind (non-adjusted) <.0001
## percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted) <.0001
## ci.lb
## percentage_ASD0:outcome_RDoCEveryday social skills (non-adjusted) 1.1439
## percentage_ASD100:outcome_RDoCEveryday social skills (non-adjusted) 2.1834
## percentage_ASD0:outcome_RDoCFacial emotion recognition (non-adjusted) 0.3639
## percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted) 0.4154
## percentage_ASD0:outcome_RDoCTheory of mind (non-adjusted) 0.6422
## percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted) 0.9285
## ci.ub
## percentage_ASD0:outcome_RDoCEveryday social skills (non-adjusted) 1.5211
## percentage_ASD100:outcome_RDoCEveryday social skills (non-adjusted) 2.5995
## percentage_ASD0:outcome_RDoCFacial emotion recognition (non-adjusted) 0.7729
## percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted) 0.8818
## percentage_ASD0:outcome_RDoCTheory of mind (non-adjusted) 1.0923
## percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted) 1.4184
##
## percentage_ASD0:outcome_RDoCEveryday social skills (non-adjusted) ***
## percentage_ASD100:outcome_RDoCEveryday social skills (non-adjusted) ***
## percentage_ASD0:outcome_RDoCFacial emotion recognition (non-adjusted) ***
## percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted) ***
## percentage_ASD0:outcome_RDoCTheory of mind (non-adjusted) ***
## percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted) ***
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(SCE.S7_a_ph, L=c(-1,1,0,0,0,0))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_RDoCEveryday social skills (non-adjusted) + percentage_ASD100:outcome_RDoCEveryday social skills (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 1.0589 0.0499 21.2054 <.0001
##
## Test of Hypothesis:
## QM(df = 1) = 449.6672, p-val < .0001
anova(SCE.S7_a_ph, L=c(0,0,-1,1,0,0))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_RDoCFacial emotion recognition (non-adjusted) + percentage_ASD100:outcome_RDoCFacial emotion recognition (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 0.0801 0.0594 1.3495 0.1772
##
## Test of Hypothesis:
## QM(df = 1) = 1.8211, p-val = 0.1772
anova(SCE.S7_a_ph, L=c(0,0,0,0,-1,1))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_RDoCTheory of mind (non-adjusted) + percentage_ASD100:outcome_RDoCTheory of mind (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 0.3062 0.0520 5.8912 <.0001
##
## Test of Hypothesis:
## QM(df = 1) = 34.7059, p-val < .0001
dat.meta.S7_b = subset(dat.meta, !is.na(percentage_CD_ODD) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S7_b$percentage_CD_ODD = as.numeric(as.character(dat.meta.S7_b$percentage_CD_ODD))
V.SCE.S7_b <- with(dat.meta.S7_b,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S7_b <- metafor::rma.mv(yi = es, V = V.SCE.S7_b,
data = dat.meta.S7_b,
mods = ~ percentage_CD_ODD * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_b, vcov = "CR2", cluster = dat.meta.S7_b$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_CD_ODD
## 3 outcome_RDoCFacial emotion recognition (non-adjusted)
## 4 outcome_RDoCTheory of mind (non-adjusted)
## 5 percentage_CD_ODD:outcome_RDoCFacial emotion recognition (non-adjusted)
## 6 percentage_CD_ODD:outcome_RDoCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.24781 0.12767 9.77 35.42 <0.001 ***
## 2 0.00381 0.00237 1.61 1.20 0.3232
## 3 -0.57585 0.16753 -3.44 49.46 0.0012 **
## 4 -0.33286 0.16593 -2.01 48.44 0.0505 .
## 5 -0.00349 0.00282 -1.23 1.74 0.3581
## 6 -0.00474 0.00255 -1.86 1.67 0.2288
anova(SCE.S7_b, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 18.3557, p-val = 0.0001
SCE.S7_b_ph = metafor::rma.mv(yi = es, V = V.SCE.S7_b,
data = dat.meta.S7_b,
mods = ~ percentage_CD_ODD : outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_b_ph, vcov = "CR2", cluster = dat.meta.S7_b$ID_study)
## Coef.
## 1 percentage_CD_ODD:outcome_RDoCEveryday social skills (non-adjusted)
## 2 percentage_CD_ODD:outcome_RDoCFacial emotion recognition (non-adjusted)
## 3 percentage_CD_ODD:outcome_RDoCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 0.004147 0.00196 2.113 1.14 0.257
## 2 0.000432 0.00153 0.282 2.25 0.802
## 3 -0.000527 0.00102 -0.514 1.26 0.683
dat.meta.S8 = subset(dat.meta, !is.na(sex) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S8$sex = as.numeric(as.character(dat.meta.S8$sex))
dat.meta.S8$sex[dat.meta.S8$sex > 100] <- NA
V.SCE.S8 <- with(dat.meta.S8,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S8 <- metafor::rma.mv(yi = es, V = V.SCE.S8,
data = dat.meta.S8,
mods = ~ sex * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S8, vcov = "CR2", cluster = dat.meta.S8$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.244019 0.25550
## 2 sex -0.000484 0.00869
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.656400 0.33073
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.429647 0.30035
## 5 sex:outcome_RDoCFacial emotion recognition (non-adjusted) 0.000419 0.01200
## 6 sex:outcome_RDoCTheory of mind (non-adjusted) 0.001340 0.00989
## t-stat d.f. p-val (Satt) Sig.
## 1 4.8689 26.52 <0.001 ***
## 2 -0.0557 5.52 0.9575
## 3 -1.9847 20.68 0.0606 .
## 4 -1.4305 23.35 0.1658
## 5 0.0349 9.38 0.9729
## 6 0.1355 9.17 0.8952
anova(SCE.S8, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 0.0915, p-val = 0.9553
SCE.S8 <- metafor::rma.mv(yi = es, V = V.SCE.S8,
data = dat.meta.S8,
mods = ~ sex + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S8, vcov = "CR2", cluster = dat.meta.S8$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.235138 0.17425
## 2 sex -0.000167 0.00562
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.645074 0.11575
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.395240 0.11338
## t-stat d.f. p-val (Satt) Sig.
## 1 7.0882 51.9 <0.001 ***
## 2 -0.0297 10.6 0.977
## 3 -5.5729 68.9 <0.001 ***
## 4 -3.4859 79.9 <0.001 ***
dat.meta.S9 = subset(dat.meta, !is.na(iq) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S9$iq = as.numeric(as.character(dat.meta.S9$iq))
# dat.meta.S9$iq[dat.meta.S9$iq > 100] <- NA
V.SCE.S9 <- with(dat.meta.S9,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE
## 1 intrcpt -0.3515 6.8922
## 2 iq 0.0155 0.0663
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) 1.6825 7.1959
## 4 outcome_RDoCTheory of mind (non-adjusted) -1.6357 9.7689
## 5 iq:outcome_RDoCFacial emotion recognition (non-adjusted) -0.0233 0.0691
## 6 iq:outcome_RDoCTheory of mind (non-adjusted) 0.0110 0.0939
## t-stat d.f. p-val (Satt) Sig.
## 1 -0.051 5.67 0.961
## 2 0.234 5.84 0.823
## 3 0.234 7.62 0.821
## 4 -0.167 4.27 0.875
## 5 -0.336 7.66 0.746
## 6 0.117 4.14 0.912
anova(SCE.S9, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.2779, p-val = 0.3202
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt -0.0653 4.0387 -0.0162
## 2 iq 0.0128 0.0389 0.3283
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.7282 0.1510 -4.8242
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.4857 0.1345 -3.6110
## d.f. p-val (Satt) Sig.
## 1 9.09 0.987
## 2 9.18 0.750
## 3 40.31 <0.001 ***
## 4 40.30 <0.001 ***
dat.meta.S9 = subset(dat.meta, !is.na(iq_diff) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S9$iq_diff = as.numeric(as.character(dat.meta.S9$iq_diff))
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq_diff * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.30997 0.3954
## 2 iq_diff 0.00530 0.0422
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.79457 0.4061
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.42750 0.4808
## 5 iq_diff:outcome_RDoCFacial emotion recognition (non-adjusted) -0.00869 0.0451
## 6 iq_diff:outcome_RDoCTheory of mind (non-adjusted) 0.00917 0.0541
## t-stat d.f. p-val (Satt) Sig.
## 1 3.313 29.29 0.00246 **
## 2 0.126 5.55 0.90447
## 3 -1.956 34.65 0.05851 .
## 4 -0.889 30.48 0.38091
## 5 -0.193 3.19 0.85878
## 6 0.170 5.48 0.87141
anova(SCE.S9, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 1.8684, p-val = 0.3929
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq_diff + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.31946 0.2590 5.095
## 2 iq_diff 0.00638 0.0248 0.258
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.76177 0.1919 -3.970
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.49280 0.1395 -3.532
## d.f. p-val (Satt) Sig.
## 1 32.88 < 0.001 ***
## 2 8.41 0.80297
## 3 40.38 < 0.001 ***
## 4 40.67 0.00104 **
dat.meta.S12.a = subset(dat.meta, !is.na(percentage_inattentive) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.a$percentage_inattentive = as.numeric(as.character(dat.meta.S12.a$percentage_inattentive))
V.SCE.S12.a <- with(dat.meta.S12.a,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.a <- metafor::rma.mv(yi = es, V = V.SCE.S12.a,
data = dat.meta.S12.a,
mods = ~ percentage_inattentive * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.a, vcov = "CR2", cluster = dat.meta.S12.a$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_inattentive
## 3 outcome_RDoCFacial emotion recognition (non-adjusted)
## 4 outcome_RDoCTheory of mind (non-adjusted)
## 5 percentage_inattentive:outcome_RDoCFacial emotion recognition (non-adjusted)
## 6 percentage_inattentive:outcome_RDoCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.33e+00 0.113307 11.6955 33.71 <0.001 ***
## 2 -2.86e-03 0.000695 -4.1207 1.13 0.1286
## 3 -5.49e-01 0.196984 -2.7855 14.36 0.0143 *
## 4 -4.12e-01 0.176876 -2.3267 37.35 0.0255 *
## 5 -8.39e-05 0.005910 -0.0142 8.43 0.9890
## 6 3.67e-03 0.001229 2.9839 1.08 0.1908
anova(SCE.S12.a, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 32.4112, p-val < .0001
SCE.S12.a <- metafor::rma.mv(yi = es, V = V.SCE.S12.a,
data = dat.meta.S12.a,
mods = ~ percentage_inattentive:outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.a, vcov = "CR2", cluster = dat.meta.S12.a$ID_study)
## Coef.
## 1 percentage_inattentive:outcome_RDoCEveryday social skills (non-adjusted)
## 2 percentage_inattentive:outcome_RDoCFacial emotion recognition (non-adjusted)
## 3 percentage_inattentive:outcome_RDoCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 -0.002799 0.000796 -3.52 1.13 0.1538
## 2 0.013238 0.005376 2.46 7.34 0.0418 *
## 3 0.000974 0.000754 1.29 1.02 0.4164
dat.meta.S12.b = subset(dat.meta, !is.na(percentage_hyperactive) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.b$percentage_hyperactive = as.numeric(as.character(dat.meta.S12.b$percentage_hyperactive))
V.SCE.S12.b <- with(dat.meta.S12.b,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.b <- metafor::rma.mv(yi = es, V = V.SCE.S12.b,
data = dat.meta.S12.b,
mods = ~ percentage_hyperactive * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.b, vcov = "CR2", cluster = dat.meta.S12.b$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_hyperactive
## 3 outcome_RDoCFacial emotion recognition (non-adjusted)
## 4 outcome_RDoCTheory of mind (non-adjusted)
## 5 percentage_hyperactive:outcome_RDoCFacial emotion recognition (non-adjusted)
## 6 percentage_hyperactive:outcome_RDoCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.259095 0.1580 7.9710 32.46 < 0.001 ***
## 2 0.000809 0.0106 0.0762 1.16 0.95024
## 3 -0.605021 0.2006 -3.0162 34.80 0.00476 **
## 4 -0.374850 0.2201 -1.7034 36.61 0.09696 .
## 5 0.003799 0.0120 0.3162 1.61 0.78800
## 6 0.005899 0.0194 0.3048 1.89 0.79079
anova(SCE.S12.b, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.4104, p-val = 0.2996
SCE.S12.b <- metafor::rma.mv(yi = es, V = V.SCE.S12.b,
data = dat.meta.S12.b,
mods = ~ percentage_hyperactive+outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.b, vcov = "CR2", cluster = dat.meta.S12.b$ID_study)
## Coef. Estimate SE t-stat
## 1 intrcpt 1.25013 0.13724 9.109
## 2 percentage_hyperactive 0.00173 0.00717 0.241
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.57018 0.16502 -3.455
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.32388 0.17141 -1.890
## d.f. p-val (Satt) Sig.
## 1 32.73 < 0.001 ***
## 2 1.52 0.83815
## 3 38.06 0.00137 **
## 4 38.57 0.06635 .
dat.meta.S12.c = subset(dat.meta, !is.na(percentage_combined) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.c$percentage_combined = as.numeric(as.character(dat.meta.S12.c$percentage_combined))
V.SCE.S12.c <- with(dat.meta.S12.c,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.c <- metafor::rma.mv(yi = es, V = V.SCE.S12.c,
data = dat.meta.S12.c,
mods = ~ percentage_combined * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.c, vcov = "CR2", cluster = dat.meta.S12.c$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_combined
## 3 outcome_RDoCFacial emotion recognition (non-adjusted)
## 4 outcome_RDoCTheory of mind (non-adjusted)
## 5 percentage_combined:outcome_RDoCFacial emotion recognition (non-adjusted)
## 6 percentage_combined:outcome_RDoCTheory of mind (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.05893 0.129117 8.201 31.16 <0.001 ***
## 2 0.00298 0.000579 5.150 1.06 0.1111
## 3 -0.26063 0.341868 -0.762 7.54 0.4690
## 4 -0.06611 0.188471 -0.351 34.08 0.7279
## 5 -0.00461 0.004233 -1.089 7.46 0.3100
## 6 -0.00388 0.000625 -6.217 1.06 0.0916 .
anova(SCE.S12.c, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 36.8837, p-val < .0001
SCE.S12.c <- metafor::rma.mv(yi = es, V = V.SCE.S12.c,
data = dat.meta.S12.c,
mods = ~ percentage_combined+outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.c, vcov = "CR2", cluster = dat.meta.S12.c$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.15156 0.122357
## 2 percentage_combined 0.00158 0.000398
## 3 outcome_RDoCFacial emotion recognition (non-adjusted) -0.55632 0.162475
## 4 outcome_RDoCTheory of mind (non-adjusted) -0.30112 0.173267
## t-stat d.f. p-val (Satt) Sig.
## 1 9.41 32.54 < 0.001 ***
## 2 3.96 1.09 0.14183
## 3 -3.42 38.23 0.00149 **
## 4 -1.74 38.64 0.09019 .